From 20eed172a79109b19859448a1a7618c0209bf057 Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 5 Feb 2009 15:28:09 +0000 Subject: [PATCH] libxenctrl: adds xc_domain_unbind_msi_irq to libxc. The function is needed to unbind MSI/MSI-X on transition from D3hot state to D0 state. Signed-off-by: Yuji Shimada --- tools/libxc/xc_domain.c | 26 ++++++++++++++++++++++++++ tools/libxc/xenctrl.h | 6 ++++++ 2 files changed, 32 insertions(+) diff --git a/tools/libxc/xc_domain.c b/tools/libxc/xc_domain.c index 5bfb34f95a..5e977307cf 100644 --- a/tools/libxc/xc_domain.c +++ b/tools/libxc/xc_domain.c @@ -941,6 +941,32 @@ int xc_domain_update_msi_irq( return rc; } +int xc_domain_unbind_msi_irq( + int xc_handle, + uint32_t domid, + uint32_t gvec, + uint32_t pirq, + uint32_t gflags) +{ + int rc; + xen_domctl_bind_pt_irq_t *bind; + + DECLARE_DOMCTL; + + domctl.cmd = XEN_DOMCTL_unbind_pt_irq; + domctl.domain = (domid_t)domid; + + bind = &(domctl.u.bind_pt_irq); + bind->hvm_domid = domid; + bind->irq_type = PT_IRQ_TYPE_MSI; + bind->machine_irq = pirq; + bind->u.msi.gvec = gvec; + bind->u.msi.gflags = gflags; + + rc = do_domctl(xc_handle, &domctl); + return rc; +} + /* Pass-through: binds machine irq to guests irq */ int xc_domain_bind_pt_irq( int xc_handle, diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index e3b4987462..dedaa0dd69 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -1094,6 +1094,12 @@ int xc_domain_update_msi_irq( uint32_t pirq, uint32_t gflags); +int xc_domain_unbind_msi_irq(int xc_handle, + uint32_t domid, + uint32_t gvec, + uint32_t pirq, + uint32_t gflags); + int xc_domain_bind_pt_irq(int xc_handle, uint32_t domid, uint8_t machine_irq, -- 2.30.2